MIG devices
데스크탑과 서버의 nvidia-smi 비교
nvidia-smi
머신러닝, 딥러닝을 공부하면서 모두가 한 번쯤 치게 되는 그 명령어이다. 보통은 CUDA version을 확인하기 위해 많이 사용하고, 현재 사용 중인 GPU 메모리를 확인하기 위해서도 사용한다.
근데 내가 쓰고 있는 데스크탑에서 이 명령어를 쳤을 때와 학교에서 대여해 준 서버에서 쳤을 때의 차이점이 있었다. 위의 이미지를 보면 데스크탑에서는 그냥 GPU 메모리를 확인하는 용도로만 사용했는데, 서버에서는 GPU와 Processes 외에도 MIG devices 부분이 나타났다.
이 부분이 뭔지 궁금해서 찾아봤는데, MIG(Multi-Instance GPU)는 NVIDIA의 A100 GPU에서 도입된 기술로, 하나의 GPU를 여러 개의 작은 인스턴스로 분할하여 다양한 작업 부하를 동시에 처리할 수 있게 해주는 기능이다. MIG는 클라우드 서비스 제공업체나 데이터 센터에서 여러 사용자에게 GPU 자원을 효율적으로 배분하고, 높은 GPU 활용도를 달성하기 위해 설계되었다고 한다.
GPU의 메모리를 분할해 뒀다는 사 실이 너무 신기했다. 당연히 이런 기술이 하나쯤은 있을 것이라 생각했지만, 우리 학교가 이런 기술을 사용하고 있을 거라는 건 생각도 못 했다. 학교를 너무 과소평가했나. 솔직히 GPU를 처음 대여받을 때 학교에 A100이 있다는 사실에도 엄청 놀랐었다. A100의 메모리를 모두 쓰고 있을 줄 알았는데 MIG를 사용하고 있었다니 다시 생각해 보면 조금 어이가 없으면서도 당연한 것이라 할 말이 없다.
장점
어쨌든 이렇게 사용하면 장점이 뭘까? 당연히 첫 번째는 자원 분할이다. 하나의 A100을 여러 사용자가 사용할 수 있게 되니까 GPU를 더 효율적으로 사용할 수 있다. 두 번째는 분할 되면 당연히 안정성이 높아진다. 다른 인스턴스와 독립적으로 동작하니 한 인스턴스에서 발생한 문제는 다른 인스턴스에 영향을 미치지 않는다. 뭐 이 밖에도 다양한 장점들이 있을 것이다.
단점
내가 못 쓴다. 약 10GB밖에 못 쓴다니 조금 속은 기분이다. 난 40GB인지 80GB인지 다 쓸 수 있을 줄 알았다. 그래도 서버가 하나 더 생겼다는 것에 만족해야지. 졸업 전까지 더 많은 리소스를 사용할 수 있으니 그래도 좋다.
이걸 보니 내가 직접 이 기술로 메모리를 나눠 보고 싶다는 생각밖에 들지 않는다. 나중에 회사 가면 언젠가 하지 않을까.